using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; namespace EnhancedScrollerDemos.ViewDrivenCellSizes { public class CellView : EnhancedScrollerCellView { public Text someTextText; /// /// A reference to the rect transform which will be /// updated by the content size fitter /// public RectTransform textRectTransform; /// /// The space around the text label so that we /// aren't up against the edges of the cell /// public RectOffset textBuffer; public void SetData(Data data) { someTextText.text = data.someText; // get the size of the rect transform and store it. // First Pass (frame countdown 2): this will be zero // Second Pass (frame countdown 1): this will be the size set by the content size fitter // Third Pass (frame countdown 0): this will be redundantly set, but the scroller needs to refresh to pull the new sizes from the second pass var sizeY = textRectTransform.sizeDelta.y; if (sizeY > 0) { // if the size has been set by the content size fitter, then we add in some padding so the // the text isn't up against the border of the cell sizeY += textBuffer.top + textBuffer.bottom; } // set the size of the cell in the model data.cellSize = sizeY; } } }